1
SIMT 执行模型与线程束划分
AI032Lesson 6
00:00

SIMT(单指令,多线程) 模型是 GPU 架构的核心。虽然你编写的是单个线程的代码,但硬件会将它们组织成两级层次结构—— 网格。为最大化效率,硬件还会将这些块进一步划分为 32 个线程的单元,称为 线程束

1. SIMT 与 SIMD 的区别

与 CPU 的 SIMD(如 SSE/AVX)不同,后者需要手动将数据打包到寄存器中;而 SIMT 允许线程在逻辑上表现为独立执行。硬件会自动将线程分组为线程束,并为全部 32 个线程统一获取一条指令,在锁步状态下执行。

2. 线性化规则

程序员使用 threadIdx.x, y, z 来编写逻辑,但硬件会将其扁平化为一维序列以供调度:

索引 = x + (y × blockDim.x) + (z × blockDim.x × blockDim.y)
二维块(8 × 8)线程束 0:编号 0–31线程束 1:编号 32–63

由于 x 维度 是变化最快的索引,因此具有连续 threadIdx.x 值的线程通常会被分配到同一个线程束中,这对 内存合并

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>